package br.usp.icmc.dilvan.aimTemplateViewer.client.aimTemplate;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@SuppressWarnings("serial")
public class ComponentAIMTemplate implements Serializable {
	String label;
	Integer maxCardinality = 0;
	Integer minCardinality = 0;
	Integer itemNumber = 0;
	boolean shouldDisplay = false;

	ArrayList<AllowedTermAIMTemplate> AllowedTerms = new ArrayList<AllowedTermAIMTemplate>();

	AnatomicEntityAIMTemplate anatomicEntityAIMTemplate = new AnatomicEntityAIMTemplate();
	
	ImagingObservationAIMTemplate imagingObservationAIMTemplate = new ImagingObservationAIMTemplate();
	
	QuestionTypeAIMTemplate questionType = new QuestionTypeAIMTemplate();
	
	CalculationTypeAIMTemplate calculation = new CalculationTypeAIMTemplate();

	public ComponentAIMTemplate() {
	}

	public ComponentAIMTemplate(String label, Integer maxCardinality,
			Integer minCardinality, Integer itemNumber, boolean shouldDisplay) {
		this.label = label;
		this.maxCardinality = maxCardinality;
		this.minCardinality = minCardinality;
		this.itemNumber = itemNumber;
		this.shouldDisplay = shouldDisplay;
	}

	public ComponentAIMTemplate(String label, int maxCardinality,
			int minCardinality, int itemNumber, boolean shouldDisplay,
			ArrayList<AllowedTermAIMTemplate> allowedTerms) {
		this.label = label;
		this.maxCardinality = maxCardinality;
		this.minCardinality = minCardinality;
		this.itemNumber = itemNumber;
		this.shouldDisplay = shouldDisplay;
		AllowedTerms = allowedTerms;
	}

	public ComponentAIMTemplate(String label, Integer maxCardinality,
			Integer minCardinality, Integer itemNumber, boolean shouldDisplay,
			ArrayList<AllowedTermAIMTemplate> allowedTerms,
			AnatomicEntityAIMTemplate anatomicEntityAIMTemplate) {
		super();
		this.label = label;
		this.maxCardinality = maxCardinality;
		this.minCardinality = minCardinality;
		this.itemNumber = itemNumber;
		this.shouldDisplay = shouldDisplay;
		AllowedTerms = allowedTerms;
		this.anatomicEntityAIMTemplate = anatomicEntityAIMTemplate;
	}

	public ComponentAIMTemplate(String label, Integer maxCardinality,
			Integer minCardinality, Integer itemNumber, boolean shouldDisplay,
			ArrayList<AllowedTermAIMTemplate> allowedTerms,
			AnatomicEntityAIMTemplate anatomicEntityAIMTemplate,
			ImagingObservationAIMTemplate imagingObservationAIMTemplate) {
		super();
		this.label = label;
		this.maxCardinality = maxCardinality;
		this.minCardinality = minCardinality;
		this.itemNumber = itemNumber;
		this.shouldDisplay = shouldDisplay;
		AllowedTerms = allowedTerms;
		this.anatomicEntityAIMTemplate = anatomicEntityAIMTemplate;
		this.imagingObservationAIMTemplate = imagingObservationAIMTemplate;
	}

	public ComponentAIMTemplate(String label, Integer maxCardinality,
			Integer minCardinality, Integer itemNumber, boolean shouldDisplay,
			ArrayList<AllowedTermAIMTemplate> allowedTerms,
			AnatomicEntityAIMTemplate anatomicEntityAIMTemplate,
			ImagingObservationAIMTemplate imagingObservationAIMTemplate,
			QuestionTypeAIMTemplate questionType) {
		super();
		this.label = label;
		this.maxCardinality = maxCardinality;
		this.minCardinality = minCardinality;
		this.itemNumber = itemNumber;
		this.shouldDisplay = shouldDisplay;
		AllowedTerms = allowedTerms;
		this.anatomicEntityAIMTemplate = anatomicEntityAIMTemplate;
		this.imagingObservationAIMTemplate = imagingObservationAIMTemplate;
		this.questionType = questionType;
	}

	public ComponentAIMTemplate(String label, Integer maxCardinality,
			Integer minCardinality, Integer itemNumber, boolean shouldDisplay,
			ArrayList<AllowedTermAIMTemplate> allowedTerms,
			AnatomicEntityAIMTemplate anatomicEntityAIMTemplate,
			ImagingObservationAIMTemplate imagingObservationAIMTemplate,
			QuestionTypeAIMTemplate questionType,
			CalculationTypeAIMTemplate calculation) {
		super();
		this.label = label;
		this.maxCardinality = maxCardinality;
		this.minCardinality = minCardinality;
		this.itemNumber = itemNumber;
		this.shouldDisplay = shouldDisplay;
		AllowedTerms = allowedTerms;
		this.anatomicEntityAIMTemplate = anatomicEntityAIMTemplate;
		this.imagingObservationAIMTemplate = imagingObservationAIMTemplate;
		this.questionType = questionType;
		this.calculation = calculation;
	}

	public String getLabel() {
		return label;
	}

	public void setLabel(String label) {
		this.label = label;
	}

	public int getMaxCardinality() {
		return maxCardinality;
	}

	public void setMaxCardinality(int maxCardinality) {
		this.maxCardinality = maxCardinality;
	}

	public int getMinCardinality() {
		return minCardinality;
	}

	public void setMinCardinality(int minCardinality) {
		this.minCardinality = minCardinality;
	}

	public int getItemNumber() {
		return itemNumber;
	}

	public void setItemNumber(int itemNumber) {
		this.itemNumber = itemNumber;
	}

	public boolean isShouldDisplay() {
		return shouldDisplay;
	}

	public void setShouldDisplay(boolean shouldDisplay) {
		this.shouldDisplay = shouldDisplay;
	}

	public List<AllowedTermAIMTemplate> getAllowedTerms() {
		return AllowedTerms;
	}

	public void setAllowedTerms(ArrayList<AllowedTermAIMTemplate> allowedTerms) {
		AllowedTerms = allowedTerms;
	}

	public AnatomicEntityAIMTemplate getAnatomicEntityAIMTemplate() {
		return anatomicEntityAIMTemplate;
	}

	public void setAnatomicEntityAIMTemplate(
			AnatomicEntityAIMTemplate anatomicEntityAIMTemplate) {
		this.anatomicEntityAIMTemplate = anatomicEntityAIMTemplate;
	}

	public void setMaxCardinality(Integer maxCardinality) {
		this.maxCardinality = maxCardinality;
	}

	public void setMinCardinality(Integer minCardinality) {
		this.minCardinality = minCardinality;
	}

	public void setItemNumber(Integer itemNumber) {
		this.itemNumber = itemNumber;
	}

	public ImagingObservationAIMTemplate getImagingObservationAIMTemplate() {
		return imagingObservationAIMTemplate;
	}

	public void setImagingObservationAIMTemplate(
			ImagingObservationAIMTemplate imagingObservationAIMTemplate) {
		this.imagingObservationAIMTemplate = imagingObservationAIMTemplate;
	}

	public AllowedTermAIMTemplate getQuestionType() {
		return questionType;
	}

	public void setQuestionType(QuestionTypeAIMTemplate questionType) {
		this.questionType = questionType;
	}

	public CalculationTypeAIMTemplate getCalculation() {
		return calculation;
	}

	public void setCalculation(CalculationTypeAIMTemplate calculation) {
		this.calculation = calculation;
	}

}
